package com.cskaoyan.javase.basic._5extra;

/**
 * 一个计算表达式中,可能存在多种数据类型的变量/常量,那么结果的数据类型应该是什么呢?
 * 对于变量参与的表达式计算,遵循表达式的类型提升
 * 由于表达式的运算结果是唯一的，所以结果 变量 的数据类型将会提升到"最大取值范围"的那个。
 * 特殊的规则:
 *      1.当计算表达式中仅存在byte,short,char参与运算时,它们的结果一律是int
 *      2.当表达式中有任一String参与字符串拼接运算,那么结果一律是String
 *
 * @since 11:47
 * @author wuguidong@cskaoyan.onaliyun.com
 */
public class Demo3 {
    public static void main(String[] args) {
        byte a = 10;
        short b = 20;
        int c = 30;
        float d = 0.1F;
        double e = 0.1;

        byte result0 = (byte) (a + b);
        int result = a + b;
        char f = 'a';
        int result2 = f + a;
        int result3 = a + a;

        float result4 = c + d;
        double result5 = c + d + e;

        String str = "hello";
        // String类型也可以通过"+"参与字符串的拼接运算
        String result6 = c + d + e + str;
    }
}
